package LeetCodeHot100TopInterview;

import java.util.Arrays;

public class Q179_MaxNum {

    //给定一组非负整数 nums，重新排列每个数的顺序（每个数不可拆分）使之组成一个最大的整数。
    //注意：输出结果可能非常大，所以你需要返回一个字符串而不是整数。
    //最大数

    //经典 自定义排序
    public String largestNumber(int[] nums) {
        if (nums == null || nums.length == 0){
            return "";
        }

        String[] str = new String[nums.length];
        for (int i = 0; i < str.length; i++) {
            str[i] = String.valueOf(nums[i]);
        }

        //自定义排序
        Arrays.sort(str, (x,y)->{
            String a = x + y;
            String b = y + x;
            // if a > b ==> x > y  按照排序顺序就是 x < y 好好理解
            return b.compareTo(a);
        });

        StringBuilder sb = new StringBuilder();
        for (String s : str) {
            sb.append(s);
        }
        //[0,0] ==> 结果要求是 0
        String ans = sb.toString();
        int start = 0;
        //ans.length() - 1
        while (start < ans.length() - 1 && ans.charAt(start) == '0'){
            start++;
        }
        ans = ans.substring(start);

        return ans;
    }


    public static void main(String[] args) {

        Q179_MaxNum  fun = new Q179_MaxNum();
        fun.largestNumber(new int[]{
                10,2
        });

    }
}
